破解和模拟CISCO ASA操作系统
Cisco 官方网站MD5截图;
2: 使用hexdump输出asa802-k8.bin 十六进制数据流,将其输入到一个指定文件中.命令:# hexdump -C asa802-k8.bin > asa802-k8.hd
3: 利用grep在生成的asa802-k8.hd 16进制文件中搜索串“1f 8b 08 00 1d”.命令:# grep "1f 8b 08 00 1d" asa802-k8.hd 001228b0 1f 8b 08 00 1d 3d 73 46 00 03 ec 3a 6d 54 14 57
4: ① 首先获取asa802-k8.bin文件的大小,然后使用10进制的文件大小数减去16进制头 001228b0,得到最后N bytes 数(10进制).
得到asa802-k8.bin文件大小为14524416 字节. 下面我们可以使用linux下非常实用的脚本语言Perl来帮助计算145244160-0x001228b0 命令:
# perl -e '$x=14524416-0x1228b0;print "$x\n"' 13334352
|
这样我们就得到了偏移量 133343525: 使用tail 获取asa802-k8.bin 中CPIO镜像文件(一种linux文件系统压缩格式)命令: #tail -c 13334352 asa802-k8.bin > asa802-k8.gz
这时文件夹内已经生成了一个gzip压缩格式文件.
6: 使用gzip解压asa802-k8.gz
命令:
这时我们发现文件夹内已经包含一个asa802-k8的CPIO镜像文件.接下来使用cpio命令解压该文件.
7: 使用cpio解压
命令:
cpio -i --make-directories --no-absolute-filenames < asa802-k8
|
OK,下面可以看到当前文件夹内出现了一个标准的文件系统,可以使用ls查看:
下面需要做的是一些编辑相关文件,之后在将这个文件系统打包,然后使用Qemu这个虚拟机来引导它.
8:编辑相关文件(etc/init.d/rcS 注意此文件并非linux根下的/etc,而是解压asa802-k8所得的文件系统内的/etc),打包文件系统.
命令:
看的内容为上面,那么我们应该使用vim来编辑它(当然也可以使用别的编辑工具,如gedit 等等).编辑后的内容如下:
确认:wr保存退出
注意拷贝出vmlinuz内核文件(模拟需要它来引导)
下面进行打包ASA文件系统工作.
打包命令:
# find . | cpio -o -H newc | gzip -9 > /home/bzzjh/asa802.gz
|
到这里asa802-k8.bin这个二进制文件已经完全的被破解出来,我们可以很清晰的发现,Cisco ASA的操作系统就是个Linux系统,唯一的只是在asa文件夹内的两个asa的操作程序,lina和lina_ monitor (后面关于模拟部分会执行lina_ monitor这个程序).
1. 利用Qemu引导(模拟)Cisco ASA Linux 文件系统.
准备工作:
① Qemu 程序(附件中提供)
② 破解出来的ASA Linux文件系统asa802.gz (附件中提供)
③ 内核:vmlinuz (附件中提供)
因为我们日常工作都是使用windows系统,下面模拟部分我转到windows下系统进行
GO !!
首先打开附件文件夹:
你看到内容如上图,之后打开asaemu:
asa802-k8是我们通过上面的步骤破解出来的asa文件系统.
这里需要说明一下:破解的步骤不能在windows环境中进行,虽然像cpio这样的程序都有一个windows的移植版,但是无法创建linux下的链接文件!
Ⅰ.点击创建Disk.cmd 文件.
之后该文件夹内将会生成一个asa802.vmdk 大小为64.0 KB的文件.
Ⅱ.鼠标右键选种3.ASA802.bat 文件,点编辑
我们将看到该批处理文件的主体内容如下 :
我们将看到该批处理文件的主体内容如下 :
..\qemu.exe -L ..\bios -hda asa802.vmdk -hdachs 980,16,32 -kernel vmlinuz -initrd asa802-k8.gz -m 256 --no-kqemu -append "auto nousb ide1=noprobe bigphysarea=16384 console=ttyS0,9600n8 hda=980,16,32" –net nic,vlan=0,model=i82557b,macaddr=00:aa:00:00:02:01 –net pcap,vlan=0,ifname=\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27} -net nic,vlan=1,model=i82557b,macaddr=00:aa:00:00:02:02 -net pcap,vlan=1,ifname=2 -serial telnet::1007,server,nowait
|
注意上面方框内的命令其实是为一行,只是因为换行的缘故.注意灰色部分请不要改动
可以进行修改的部分是粉红色部分和深蓝色部分
下面解释一下粉红色部分和深蓝色部分的意思:
–net nic,vlan=0,model=i82557b,macaddr=00:aa:00:00:02:01
在asa中创建一个网卡,型号为intel i82557b,vlan号为0,mac地址为00:aa:00:00:02:01。这条命令后面: –net pcap,vlan=0,ifname=\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
意思是说将创建的这个属于vlan0的网卡桥接到本地网卡中,其中本地网卡的参数为\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
那么深蓝色部分也同样理解:
-net nic,vlan=1,model=i82557b,macaddr=00:aa:00:00:02:02 -net pcap,vlan=1,ifname=2
在asa创建另一个网卡,vlan为1,mac地址为00:aa:00:00:02:02,并将其桥接到网卡号为2的本地网卡上.
这里肯定会有一个疑问:
ifname=\Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27}
ifname=2
这是两个参数主要是用来桥接到本地网卡,那么它是如何得知?
答案就在下面
Ⅲ. 点击获取网卡参数.
.(注意需要安装winpcap,附件文件夹内已提供)
如图:以上就是我的机器中所有可用的网卡,和它的参数
这里同一个网卡参数,可以用两个不同的方法去表示.比如3号,Intel的无线网卡.我们即可以ifname=3 也可以ifname= \Device\NPF_{E93E58F7-430F-45F7-9565-0CEED2108E27} 意思都是将某一个asa中的端口桥接到本地的这个无线网卡上.(这里ifname还可以支持tap接口,因为篇幅问题加上tap接口配置有比较烦琐,不加详细介绍,有兴趣可以邮件讨论)
所以在第一次运行之前请务必需要修改文件中的网卡参数为你主机对应的网卡参数(红下划线部分).
提示:当然3.ASA802.bat 文件的批处理只模拟运行一个asa(2个端口),你也可以模拟更多的接口,创建接口:
-net nic,vlan=N,model=i82557b,macaddr=00:aa:00:00:02:01 -net pcap,vlan=N,ifname=XXXX
运行多个asa可以在附件文件夹内复制多个asaemu文件夹,分别运行文件夹内的相应文件
Ⅳ.做好一切准备工作后,点击3.ASA802.bat
将看到:
之后使用telnet 工具.这里我使用SecureCRT演示
创建快速连接,如上图.点击Connect,将会看到一个启动信息:
今后将进入shell 命令环境:
依次如图键入命令:
以上是对Disk进行格式化和挂载分区(使用linux fdisk命令),按照上面操作完毕即可,另外这一步紧在第一次启动时需要操作,以后就不再需要!
依次键入下图命令:
上面这一步是加载e100模块和激活网卡(注意在3.ASA802.bat中模拟了几个端口这里就需要up几个网卡,eth0,eth1,….ethN),然后启动lina_monitor程序(asa操作程序),在输入/asa/bin/lina_monitor后回车,之后就可以进入到ciscoasa>界面
可选操作--begin(如果对linux系统不熟悉可以跳过下面步骤): 这一步骤是在每次启动都必须执行的.当然可以这样做,在打包asa linux文件系统之前可以写一个自动的脚本在其中(). 首先使用vim编辑一个脚本存放在bin/文件夹内如图:
|